package br.com.flexdev.business.factory;
import java.util.Collection;

import org.hibernate.Query;

import br.com.flexdev.business.vo.PaisVO;
import br.com.flexdev.persistence.BD;
import br.com.flexdev.persistence.dao.DaoPais;


public class FactoryPais implements IFactory {

	private DaoPais daoPais;
		
	public FactoryPais() throws Exception{
		super();
		this.init();
	}
	
	public void init() throws Exception {
		this.daoPais = new DaoPais();
		this.setPais(new PaisVO());
	}
	
	public PaisVO salvar() throws Exception {
		try {
			return this.daoPais.salvar();
        } catch (Exception e) {
            throw e;
        }
	}

	public void excluir() throws Exception{
		try {
            this.daoPais.excluir();
        } catch (Exception e) {
            throw e;
        }
	}
		
	public PaisVO obter() throws Exception {
		try {
            return this.daoPais.obter();
        } catch (Exception e) {
            throw e;
        }
	}
	
	public Collection<?> obterPaisDs() throws Exception{
		try {
			Query query = BD.getSession().getNamedQuery("consultaPaisDs");   
			query.setString("p_dsPais", this.daoPais.getPais().getDsPais());
            return this.daoPais.obterPaisDs(query);
        } catch (Exception e) {
            throw e;
        }
	}

	public Collection<?> obterListaFilhos(Object p_objFilho, String p_atrFilhoOrdenar) throws Exception {
		try {
            return this.daoPais.obterListarFilhos(p_objFilho, p_atrFilhoOrdenar);
        } catch (Exception e) {
            throw e;
        }
	}
	
	public Collection<?> obterListaLike() throws Exception {
		try {
			
            return this.daoPais.obterListaLike();
        } catch (Exception e) {
            throw e;
        }
	}

	public Collection<?>obterLista() throws Exception {
		try {
            return this.daoPais.obterLista();
        } catch (Exception e) {
            throw e;
        }
	}

	public PaisVO getPais() {
		return this.daoPais.getPais();
	}

	public void setPais(PaisVO p_Pais) {
		this.daoPais.setPais(p_Pais);
	}	
}
